#ifndef STACK_H
#define STACK_H

// 4096    = 1 << 12
// 32768   = 1 << 15
// 1048576 = 1 << 20

#include "scm.h"

#define VM_STACK_SIZE (1 << 16)

extern scm vm_stack[VM_STACK_SIZE];
extern scm vm_stack_ptr;
extern scm vm_stack_base_ptr;

void stack_push(scm obj);
scm stack_pop();

void stack_grow(scm n);

scm vm_stack_top_ref(scm i);
void vm_set_stack_top(scm i, scm obj);
scm vm_stack_base_ref(scm i);
void vm_set_stack_base(scm i, scm obj);

#endif
